š API de Autenticação - Documentação Completa
š VisĆ£o Geral
A API de Autenticação é responsÔvel por toda a gestão de autenticação e autorização no sistema CordenaAi, incluindo login, registro de usuÔrios, recuperação de senha, confirmação de email, validação de tokens JWT e integração com o sistema de corresponsÔveis. O sistema utiliza ASP.NET Core Identity com JWT para autenticação segura.
šÆ Endpoints DisponĆveis
1. POST /api/autenticacao/token
Obter Token JWT
- Descrição: Gera um token JWT para autenticação no sistema
- MƩtodo: POST
- Autenticação: Não requerida (AllowAnonymous)
- Body: Objeto LoginRequest com credenciais
- Resposta: Token JWT em formato texto
- Uso: Autenticação inicial de usuÔrios e aplicações
2. POST /api/autenticacao/login
Login Completo
- Descrição: Realiza login e retorna informações completas do usuÔrio autenticado
- MƩtodo: POST
- Autenticação: Não requerida (AllowAnonymous)
- Body: Objeto LoginRequest com credenciais
- Resposta: Objeto com dados do usuƔrio e token JWT
- Uso: Login principal com retorno de dados completos do usuƔrio
3. GET /api/autenticacao/validar-token
Validar Token JWT
- Descrição: Valida se um token JWT é vÔlido e não expirado
- MƩtodo: GET
- Autenticação: Opcional (AllowAnonymous)
- Parâmetros:
token (query): Token JWT a ser validado
- Resposta: Status de validação do token
- Uso: Verificação de tokens em aplicações cliente
4. POST /api/autenticacao/registrar
Registrar Novo UsuƔrio
- Descrição: Cria uma nova conta de usuÔrio no sistema
- MƩtodo: POST
- Autenticação: Não requerida (AllowAnonymous)
- Body: Objeto CriarUsuarioRequest com dados do usuƔrio
- Resposta: Confirmação de registro e dados do usuÔrio criado
- Uso: Cadastro de novos usuƔrios no sistema
5. POST /api/autenticacao/verificar-convite-pendente
Verificar Convite Pendente
- Descrição: Verifica se existe convite de corresponsÔvel pendente para o usuÔrio
- MƩtodo: POST
- Autenticação: Não requerida (AllowAnonymous)
- Body: Objeto VerificarConvitePendenteRequest
- Resposta: InformaƧƵes sobre convites pendentes
- Uso: Verificação antes do registro para associar corresponsÔveis
6. GET /api/autenticacao/verificar-token-convite/{tokenConvite}
Verificar Token de Convite
- Descrição: Valida um token de convite de corresponsÔvel
- MƩtodo: GET
- Autenticação: Não requerida (AllowAnonymous)
- Parâmetros:
tokenConvite (path): Token do convite a ser validado
- Resposta: Status de validação do token de convite
- Uso: Validação de convites antes do registro
7. POST /api/autenticacao/registrar-com-convite
Registrar com Convite
- Descrição: Registra usuÔrio associando-o a um convite de corresponsÔvel
- MƩtodo: POST
- Autenticação: Não requerida (AllowAnonymous)
- Body: Objeto RegistrarComConviteRequest
- Resposta: Confirmação de registro com associação ao corresponsÔvel
- Uso: Registro de usuƔrios atravƩs de convites
8. GET /api/autenticacao/confirmar-email
Confirmar Email
- Descrição: Confirma o email do usuÔrio com código de verificação
- MƩtodo: GET
- Autenticação: Não requerida (AllowAnonymous)
- Parâmetros:
userId (query): ID do usuƔrio
code (query): Código de confirmação
pwd (query): Senha temporƔria
- Resposta: Confirmação de ativação da conta
- Uso: Ativação de contas após registro
9. POST /api/autenticacao/forgot-password
Solicitar Recuperação de Senha
- Descrição: Envia email com link para recuperação de senha
- MƩtodo: POST
- Autenticação: Não requerida (AllowAnonymous)
- Body: Objeto ForgotPasswordRequest com email
- Resposta: Confirmação de envio do email
- Uso: Recuperação de senha esquecida
10. POST /api/autenticacao/reset-password
Redefinir Senha
- Descrição: Redefine a senha do usuÔrio com token de verificação
- MƩtodo: POST
- Autenticação: Não requerida (AllowAnonymous)
- Body: Objeto ResetPasswordRequest
- Resposta: Confirmação de redefinição de senha
- Uso: Definição de nova senha após solicitação de recuperação
11. GET /api/autenticacao/reset-password
PÔgina de Redefinição de Senha
- Descrição: Retorna pÔgina HTML para redefinição de senha
- MƩtodo: GET
- Autenticação: Não requerida (AllowAnonymous)
- Parâmetros:
userId (query): ID do usuƔrio
code (query): Código de verificação
- Resposta: PƔgina HTML para inserir nova senha
- Uso: Interface web para redefinição de senha
š§ Modelo de Dados
Estrutura do LoginRequest
{
"userName": "string",
"password": "string",
"tipo": "user" | "app"
}
Estrutura do CriarUsuarioRequest
{
"userName": "string",
"email": "string",
"password": "string",
"nome": "string",
"nomeSocial": "string",
"cpf": "string",
"celular": "string",
"genero": "string",
"dataNascimento": "datetime",
"foto": "string",
"aceiteReceberComunicado": "boolean",
"aceiteTermosLgpd": "boolean",
"status": "string",
"dataCadastro": "datetime",
"dataAtualizacao": "datetime"
}
Estrutura do LoginResult
{
"status": "boolean",
"message": "string",
"token": {
"token": "string",
"dtEmissao": "datetime",
"dtExpiracao": "datetime"
},
"usuario": {
"id": "string",
"nome": "string",
"email": "string",
"userName": "string",
"cpf": "string",
"celular": "string",
"status": "string"
}
}
š Autenticação e Autorização
Tipos de Autenticação
- JWT Bearer Token: Para endpoints protegidos
- AllowAnonymous: Para endpoints de login, registro e recuperação
- Tipo de UsuƔrio:
user: UsuƔrio normal do sistema
app: Aplicação sistêmica
PermissƵes por Endpoint
- Endpoints Públicos: login, registro, recuperação de senha, confirmação de email
- Endpoints Protegidos: validação de token (opcional)
- Rate Limiting: Aplicado conforme configuração do sistema
š Casos de Uso Principais
1. Fluxo de Login
POST /api/autenticacao/login
Content-Type: application/json
{
"userName": "[email protected]",
"password": "senha123",
"tipo": "user"
}
2. Fluxo de Registro
POST /api/autenticacao/registrar
Content-Type: application/json
{
"userName": "[email protected]",
"email": "[email protected]",
"password": "senha123",
"nome": "Novo UsuƔrio",
"cpf": "12345678901",
"celular": "11999999999"
}
3. Fluxo de Recuperação de Senha
POST /api/autenticacao/forgot-password
Content-Type: application/json
{
"email": "[email protected]"
}
4. Fluxo de Redefinição de Senha
POST /api/autenticacao/reset-password
Content-Type: application/json
{
"userId": "user-id",
"code": "verification-code",
"newPassword": "novaSenha123"
}
ā ļø ValidaƧƵes e Regras de Negócio
Validações Obrigatórias
- UserName: Obrigatório, formato de email vÔlido
- Password: Obrigatório, mĆnimo 6 caracteres
- Email: Formato vÔlido, único no sistema
- CPF: Formato vÔlido, único no sistema
- Celular: Formato vƔlido brasileiro
Regras de Negócio
- Idade mĆnima: 18 anos para registro
- Confirmação de email: Obrigatória para ativação da conta
- Token JWT: Expira em 24 horas
- Rate Limiting: 5 tentativas de login por minuto
- Soft Delete: UsuĆ”rios inativados nĆ£o sĆ£o excluĆdos permanentemente
- Hard Delete: Exclusão permanente feita por cascata quando necessÔrio
- Auditoria: Todas as operações são logadas
šØ Tratamento de Erros
Códigos de Status HTTP
- 200: Sucesso
- 201: Criado com sucesso
- 400: Dados invƔlidos
- 401: Não autorizado / Credenciais invÔlidas
- 403: Acesso negado
- 404: UsuÔrio não encontrado
- 409: Conflito (Email/CPF jĆ” existente)
- 429: Muitas tentativas (Rate Limiting)
- 500: Erro interno do servidor
Formato de Erro
{
"error": "string",
"message": "string",
"details": "string",
"timestamp": "datetime"
}
š Performance e LimitaƧƵes
LimitaƧƵes
- Rate Limiting: 1000 requests por hora por IP
- Timeout: 30 segundos por requisição
- Tamanho do Token: MƔximo 4KB
- Tentativas de Login: 5 por minuto por IP
OtimizaƧƵes
- Cache: Tokens são cacheados por 5 minutos
- Compressão: Respostas comprimidas com gzip
- Validação: Validação rÔpida de tokens JWT
- Connection Pooling: Pool de conexƵes para banco de dados
š Integração com Outros Módulos
Módulos Relacionados
- CorresponsÔveis: Verificação de convites pendentes
- UsuÔrios: Gestão de perfis e dados pessoais
- Email: Envio de confirmações e recuperação
- Logs: Auditoria de todas as operaƧƵes
- Rate Limiting: Controle de tentativas de acesso
š± Uso em AplicaƧƵes
Web App
- Login/logout de usuƔrios
- Registro de novas contas
- Recuperação de senha
- Confirmação de email
- Gestão de sessões
Mobile App
- Autenticação offline/online
- Biometria (quando disponĆvel)
- NotificaƧƵes push
- Sincronização de dados
API Externa
- Autenticação de aplicações
- Integração com sistemas terceiros
- Webhooks de eventos
- Rate limiting por aplicação
š ļø Manutenção e Monitoramento
Logs Importantes
- Tentativas de login (sucesso/falha)
- Registros de novos usuƔrios
- RecuperaƧƵes de senha
- Tentativas de acesso não autorizado
- Erros de validação
MƩtricas Monitoradas
- Número de usuÔrios ativos
- Taxa de sucesso de login
- Tempo de resposta dos endpoints
- Tentativas de brute force
- Uso de recursos por endpoint
š Exemplos PrĆ”ticos
Fluxo Completo de Registro
- Validação de dados no backend pela própria API
- POST /api/autenticacao/verificar-convite-pendente para verificar convites
- POST /api/autenticacao/registrar com dados validados
- Envio de email de confirmação automÔtico
- GET /api/autenticacao/confirmar-email para ativar conta
- POST /api/autenticacao/login para primeiro acesso
Fluxo de Recuperação de Senha
- POST /api/autenticacao/forgot-password com email
- Envio de email com link de recuperação
- GET /api/autenticacao/reset-password para acessar pƔgina
- POST /api/autenticacao/reset-password com nova senha
- POST /api/autenticacao/login com nova senha
Integração com CorresponsÔveis
- Verificação de convite antes do registro
- Registro com associação automÔtica ao corresponsÔvel
- Notificação ao corresponsÔvel sobre novo usuÔrio
- Ativação da relação corresponsÔvel-atleta
Versão: 1.0
Ćltima Atualização: Outubro de 2025
ResponsƔvel: Equipe de Desenvolvimento CordenaAi